iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Modern Web

JS 忍者訓練計畫系列 第 2

進入JS 忍者的世界(上) Day1

  • 分享至 

  • xImage
  •  

在修業之前,先大約理解後面會講到的東西。
技術提及的方向,跟不提及的方向,以及會預備推薦要知道的知識。

目前讀起來書本偏重於 JS 函式庫的設計,說明比較深入的 JS 物件、閉包、函式用法,
但不基於或提及瀏覽器以外 Node.js 環境,與現在JS 框架

另外函式庫的穩定性跟效能也極度重要,所以書裡也說明了測試、效能跟除錯技巧等。

這章想學到什麼?

  • 概觀進階的 JS 世界有什麼? 物件、閉包、函式、計時器、with 述句、eval 用法
  • 開發函示庫之跨瀏覽起支援的考量有哪些,注意市占率與開發成本等 (在下集)
  • 概觀最佳實務的測試函式寫法與效能分析的時間戳用法 (在下集)

程式碼閱讀練習與撰寫

概觀進階的 JS 世界有什麼?

  • 物件、閉包、函式的密切關係,在物件中的函式,以函式建構物件,函示中的函式?長怎樣,如下
// 物件中的函式

let profile = {
    firstname: 'Hu',
    lastname: 'Jim',
    callme: function () {
        console.log(`My name is ${this.firstname} ${this.lastname}`)  
    }
}
profile.callme()

//or 函式建構物件

function Profile(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}

const myInfo = new Profile("Jim", "Hu", 50, "black");

//or 函示中的函式

let callme = (firstname) => {
    return (nickname) => {
        let title = firstname || '';
        let lastname = nickname || 'Jimmy'; 
        console.log(`My name is ${firstname} ${lastname}`)
    }
}

callme('Peter')('Pan')
  • 被忽略的功能:計時器(timer)與正規表示式
setTimeout(functionRef, delay, param1, param2, /* … ,*/ paramN)
setInterval(func, delay, arg0, arg1, /* … ,*/ argN)

//正規後續補充,大約如下
var re = new RegExp('ab+c');
const sayHello = 'alert("hello eval")'
eval(sayHello)

WARNING:
eval() 是一個危險的函示,它使用與調用者相同的權限執行代碼。如果你用 eval() 運行的字符串程式被惡意修改,您最终可能會在您的網頁/或插鍵的權限下,在用戶電腦上運行惡意程式。

是不是有一點 Fu 了呢?下集待續

Be fixed on the version, but flexible on the journey. —— Jeff Bezos

參考資料

https://gs.statcounter.com/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval


上一篇
學徒、忍者、大師? 忍蛋三人組的火影之路 (Day 0)
下一篇
進入JS 忍者的世界(下) Day2
系列文
JS 忍者訓練計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言